package pe.gob.onpe.ejb;

import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import pe.gob.onpe.ejb.id.CronogramaElectoralId;


/**
 * CronogramaElectoral entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "CRONOGRAMA_ELECTORAL", schema = "SVENP", uniqueConstraints = {})
public class CronogramaElectoral implements java.io.Serializable {

	// Fields
	private static final long serialVersionUID = 5916027604271933851L;
	private CronogramaElectoralId id;
	private ActividadElectoral actividadElectoral;
	private ProcesoElectoral procesoElectoral;
	private String nombre;
	private String descripcion;
	private Date fechainicioactividad;
	private Date fechafinactividad;
	private String estadoactividad;

	// Constructors

	/** default constructor */
	public CronogramaElectoral() {
	}

	/** minimal constructor */
	public CronogramaElectoral(CronogramaElectoralId id,
			ActividadElectoral actividadElectoral,
			ProcesoElectoral procesoElectoral, String nombre) {
		this.id = id;
		this.actividadElectoral = actividadElectoral;
		this.procesoElectoral = procesoElectoral;
		this.nombre = nombre;
	}

	/** full constructor */
	public CronogramaElectoral(CronogramaElectoralId id,
			ActividadElectoral actividadElectoral,
			ProcesoElectoral procesoElectoral, String nombre,
			String descripcion, Date fechainicioactividad,
			Date fechafinactividad, String estadoactividad) {
		this.id = id;
		this.actividadElectoral = actividadElectoral;
		this.procesoElectoral = procesoElectoral;
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.fechainicioactividad = fechainicioactividad;
		this.fechafinactividad = fechafinactividad;
		this.estadoactividad = estadoactividad;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "actividadElectoralId", column = @Column(name = "ACTIVIDAD_ELECTORAL_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)),
			@AttributeOverride(name = "procesoElectoralId", column = @Column(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = true, updatable = true, precision = 10, scale = 0)) })
	public CronogramaElectoralId getId() {
		return this.id;
	}

	public void setId(CronogramaElectoralId id) {
		this.id = id;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "ACTIVIDAD_ELECTORAL_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public ActividadElectoral getActividadElectoral() {
		return this.actividadElectoral;
	}

	public void setActividadElectoral(ActividadElectoral actividadElectoral) {
		this.actividadElectoral = actividadElectoral;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "PROCESO_ELECTORAL_ID", unique = false, nullable = false, insertable = false, updatable = false)
	public ProcesoElectoral getProcesoElectoral() {
		return this.procesoElectoral;
	}

	public void setProcesoElectoral(ProcesoElectoral procesoElectoral) {
		this.procesoElectoral = procesoElectoral;
	}

	@Column(name = "NOMBRE", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "DESCRIPCION", unique = false, nullable = true, insertable = true, updatable = true)
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FECHAINICIOACTIVIDAD", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	public Date getFechainicioactividad() {
		return this.fechainicioactividad;
	}

	public void setFechainicioactividad(Date fechainicioactividad) {
		this.fechainicioactividad = fechainicioactividad;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FECHAFINACTIVIDAD", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	public Date getFechafinactividad() {
		return this.fechafinactividad;
	}

	public void setFechafinactividad(Date fechafinactividad) {
		this.fechafinactividad = fechafinactividad;
	}

	@Column(name = "ESTADOACTIVIDAD", unique = false, nullable = true, insertable = true, updatable = true)
	public String getEstadoactividad() {
		return this.estadoactividad;
	}

	public void setEstadoactividad(String estadoactividad) {
		this.estadoactividad = estadoactividad;
	}

}